
#include "data.h"
#include "UART.h"
#include <string.h>
//----------------------------------------//
//! valid_Data                            //
//! Overeni startu ramce (znak $)  		  //
//! param prijaty znak					  //
//----------------------------------------//
STAV valid_Data(const char arg_znak)
{
        if(arg_znak=='$')
        {
                return START_RAMCE;
        }
        return 0;
}

//----------------------------------------//
//! read_Data                             //
//! NActeni a overeni platnosti dat (vet) //
//! param v
//----------------------------------------//
void nactiData(char znak) {
	cli();
	GPSdata *loc_ptr;
	i++;
#ifndef INIT                            // Prvni prubeh - inicialiazace reference
	loc_ptr=ptr_reference;
#endif
#ifdef INIT
	loc_ptr = ptr_aktualni;
#endif
	//loc_znak=read_UART();		// !!!Pokud dojde k preruseni dodavani dat, tak tadz to bude stat
	if ((i == 3) && (znak != 'R')) {
		loc_ptr->platnost = NESPRAVNY_VSTUP;
		i=0;
		return;
	}

	if ((i == 18) && (znak != 'A'))            //<! Nejsou validni data
			{
		loc_ptr->platnost = NEPLATNA_DATA;
		flag = 0;            //<! Kod
		return;
	}

	if (i > 18) {
		switch (znak) {
		//case '.': TEcka se bude hodit jako rozdelovac
		case ',':
		case 'E':
		case 'N':
			break;
		default:
			pole[i - 18] = znak;           //<! Ulozeni platnejch dat
			break;
		}
	}
}

loc_ptr->delka=getValue();
loc_ptr->sirka=copyPole();
loc_ptr->platnost=PLATNA_DATA;
flag = 0;
//Platny data #ifnded INIT, #define INIT
}

double copyPole()
{
	char loc_znak;
	for(int i=0;i<5;i++)
	{
		loc_znak=pole[i+5];
		pole[i]=loc_znak;
	}
	return (getValue());
}

double getValue()
{
	char loc_pole[5];
	strncpy(pole,loc_pole,5);
	return (atof(loc_pole));
}

void porovnejPolohy()
{
	if((ptr_reference->delka!=ptr_aktualni->delka)||(ptr_reference->sirka!=ptr_aktualni->sirka))
	{
		//Generace alarmu
	}
}
